export namespace Cfg {
    <% for(let k = 0; k < td.length; k++) { %>
        export class <%- td[k].className %> {
            private static dataMap: Record<number, <%- td[k].className %>> = {};
            private static $kv: _<%- td[k].className %>;

            public static get(id: number): <%- td[k].className %> | undefined {
                return this.dataMap[id];
            }

            public static global(): _<%- td[k].className %> {
                return this.$kv;
            }

            public static list(): <%- td[k].className %>[] {
                return Object.values(this.dataMap);
            }

            <% for (let i = 0; i < td[k].columnName.length; i++) {
                if(!td[k].columnName[i]) continue;
                if (!td[k].columnName[i].startsWith('$')) { %>
                public readonly <%- td[k].columnName[i] %>: <%- td[k].columnType[i] %>; // <%- td[k].columnDesc[i] %> <%- td[k].columnRemark[i] %>
            <% }} %>

            constructor(
                <% for (let i = 0; i < td[k].columnName.length; i++) {
                    if(!td[k].columnName[i]) continue;
                    if (!td[k].columnName[i].startsWith('$')) { %>
                    <%- td[k].columnName[i] %>: <%- td[k].columnType[i] %>,
                <% }} %>
            ) {
                <% for (let i = 0; i < td[k].columnName.length; i++) {
                    if(!td[k].columnName[i]) continue;
                    if (!td[k].columnName[i].startsWith('$')) { %>
                    this.<%- td[k].columnName[i] %> = <%- td[k].columnName[i] %>;
                <% }} %>
            }
        }

        export class _<%- td[k].className %> {
            <% for (let i = 0; i < td[k].columnName.length; i++) {
                if(!td[k].columnName[i]) continue;
                if (td[k].columnName[i].startsWith('$')) { %>
                public readonly <%- td[k].columnName[i].replace('$', '') %>: <%- td[k].columnType[i] %>; // <%- td[k].columnDesc[i] %> <%- td[k].columnRemark[i] %>
            <% }} %>

            constructor(
                <% for (let i = 0; i < td[k].columnName.length; i++) {
                    if(!td[k].columnName[i]) continue;
                    if (td[k].columnName[i].startsWith('$')) { %>
                    <%- td[k].columnName[i].replace('$', '') %>: <%- td[k].columnType[i] %>,
                <% }} %>
            ) {
                <% for (let i = 0; i < td[k].columnName.length; i++) {
                    if(!td[k].columnName[i]) continue;
                    if (td[k].columnName[i].startsWith('$')) { %>
                    this.<%- td[k].columnName[i].replace('$', '') %> = <%- td[k].columnName[i].replace('$', '') %>;
                <% }} %>
            }
        }
    <% } %>
}